package com.smartmedical.patient.share.service.Impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.smartmedical.patient.share.domain.*;
import com.smartmedical.patient.share.domain.vo.DiseaseSearchVo;
import com.smartmedical.patient.share.domain.vo.DoctorSearchVo;
import com.smartmedical.patient.share.domain.vo.DrugsSearchVo;
import com.smartmedical.patient.share.mapper.BannersMapper;
import com.smartmedical.patient.share.service.BannersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;

@Service
@DS("slave")
public class BannersServiceImpl implements BannersService {
    @Autowired
    private BannersMapper bannersMapper;

    @Override
    public List<Banners> bannersShow() {
        List<Banners> banners = bannersMapper.bannersShow();
        return banners;
    }

    @Override
    public Search search(String keyWord) {
        // 创建一个 Search 对象
        Search search = new Search();

        // 调用 bannersMapper 的 DiseaseSearch 方法，传入关键字，获取疾病搜索结果列表
        List<DiseaseKnowledge> diseaseSearchList = bannersMapper.DiseaseSearch(keyWord);

        // 调用 bannersMapper 的 DoctorSearch 方法，传入关键字，获取医生搜索结果列表
        List<Doctor> doctorSearchList = bannersMapper.DoctorSearch(keyWord);

        // 调用 bannersMapper 的 DrugsSearch 方法，传入关键字，获取药品搜索结果列表
        List<DrugsKnowledge> drugsSearchList = bannersMapper.DrugsSearch(keyWord);

        // 获取 Search 对象的疾病搜索结果列表
        List<DiseaseSearchVo> diseaseSearchVoList = new ArrayList<>();

        // 获取 Search 对象的医生搜索结果列表
        List<DoctorSearchVo> doctorSearchVoList = new ArrayList<>();

        // 获取 Search 对象的药品搜索结果列表
        List<DrugsSearchVo> drugsSearchVoList = new ArrayList<>();


        // 遍历疾病搜索结果列表，为每个疾病搜索结果设置疾病名称
        if (diseaseSearchList!= null) {
        for (DiseaseKnowledge diseaseKnowledge : diseaseSearchList) {

                // 创建一个 DiseaseSearchVo 对象
                DiseaseSearchVo diseaseSearchVo = new DiseaseSearchVo();
                // 设置 DiseaseSearchVo 对象的疾病 ID
                diseaseSearchVo.setDiseaseId(diseaseKnowledge.getId());
                //  设置 DiseaseSearchVo 对象的疾病名称
                diseaseSearchVo.setDiseaseName(diseaseKnowledge.getPathology());
                // 将疾病搜索结果添加到 Search 对象的疾病搜索结果列表中
                diseaseSearchVoList.add(diseaseSearchVo);
            }

        }


        // 遍历医生搜索结果列表，为每个医生搜索结果设置医生名称
        if (doctorSearchList.size() != 0) {
        for (Doctor doctor : doctorSearchList) {

                // 创建一个 DoctorSearchVo 对象
                DoctorSearchVo doctorSearchVo = new DoctorSearchVo();
                // 设置 DoctorSearchVo 对象的医生 ID
                doctorSearchVo.setDoctorId(doctor.getId());
                // 设置 DoctorSearchVo 对象的医生名称
                doctorSearchVo.setDoctorName(doctor.getName());
                // 设置 DoctorSearchVo 对象的医生头像
                doctorSearchVoList.add(doctorSearchVo);
            }

        }


// 遍历药品搜索结果列表，为每个药品搜索结果设置药品名称
        if (drugsSearchList.size() != 0) {
            // 遍历药品搜索结果列表，为每个药品搜索结果设置药品名称
        for (DrugsKnowledge drugsKnowledge : drugsSearchList) {
                // 创建一个 DrugsSearchVo 对象
                DrugsSearchVo drugsSearchVo = new DrugsSearchVo();
                // 设置 DrugsSearchVo 对象的药品分类名称
                drugsSearchVo.setDrugId(drugsKnowledge.getId());
                // 设置 DrugsSearchVo 对象的药品名称
                drugsSearchVo.setDrugName(drugsKnowledge.getName());
                // 设置 DrugsSearchVo 对象的药品分类名称
                drugsSearchVoList.add(drugsSearchVo);
            }
        }


// 设置 Search 对象的疾病搜索结果列表search.setDiseaseSearchVoList(diseaseSearchVoList); // 疾病搜索结果列表
        search.setDiseaseSearchVoList(diseaseSearchVoList);
        search.setDrugsSearchVoList(drugsSearchVoList);
        search.setDoctorSearchVoList(doctorSearchVoList);
        // 调用 bannersMapper 的 search 方法，传入关键字，获取最终的搜索结果并返回
        return search;
    }

}
